import os
import numpy as np
import torch
import torch.nn as nn
from torch.utils.data import Dataset, DataLoader
import random

def seed_torch(seed=42):
    """
    设置随机种子以确保实验的可重复性。

    参数:
    - seed: 随机种子，默认为42。
    """
    # 将种子转换为整数
    seed = int(seed)
    # 设置Python内置的随机数生成器的种子
    random.seed(seed)
    # 设置Python哈希函数的种子
    os.environ['PYTHONHASHSEED'] = str(seed)
    # 设置NumPy的随机数生成器的种子
    np.random.seed(seed)
    # 设置PyTorch的CPU随机数生成器的种子
    torch.manual_seed(seed)
    # 设置PyTorch的GPU随机数生成器的种子
    torch.cuda.manual_seed(seed)
    # 设置所有GPU的随机数生成器的种子
    torch.cuda.manual_seed_all(seed)
    # 确保每次返回的卷积算法是确定的
    torch.backends.cudnn.deterministic = True
    # 禁用cuDNN的自动优化
    torch.backends.cudnn.benchmark = False
    # 禁用cuDNN
    torch.backends.cudnn.enabled = False